package com.tsmti.activiti.service;


import com.tsmti.activiti.entity.ExtendActModel;
import com.tsmti.core.common.query.data.Page;
import com.tsmti.core.common.query.data.Pageable;
import com.tsmti.core.common.service.BaseService;
import org.hibernate.criterion.DetachedCriteria;
import java.io.IOException;

/**
 * @Package：com.tsmti.activiti.service
 * @Class：ExtendActModelerService
 * @Description： 流程模板扩展表
 * @Author：zcw
 * @Date：Created in 2018/8/16 16:50
 * @Company:
 * @Version：
 * @Modified By:
 *
 */
public interface ExtendActModelerService  extends BaseService<ExtendActModel>{
	/**
	 * 删除
	 * @param id 主键
	 */
	void delete(String id);

	/**
	 * 批量删除
	 * @param ids 主键集合
	 */
	void deleteBatch(String[] ids);

	/**
	 * 创建模型
	 * @param extendActModel 模型
	 * @return 创建模型
	 */
	ExtendActModel createModel(ExtendActModel extendActModel);
	/**
	 * 部署流程
	 * @param modelId 模型id
	 * @throws IOException 抛出异常
	 */
	void deploy(String modelId) throws IOException;

	/**
	 * 返回list
	 * @param pageable 查询条件
	 * @param detachedCriteria 查询条件
	 * @return 查询条件
	 */
	Page<ExtendActModel> findPage(Pageable pageable, DetachedCriteria detachedCriteria);

	/**
	 * 根据工作流查询流程
	 * @param workflowId 工作流
	 * @return 根据工作流查询流程
	 */
	ExtendActModel findByWrokflowId(String workflowId);

	/**
	 * 根据流程id获取流程模型和业务相关信息
	 * @param workflowId 工作流
	 * @return 根据流程id获取流程模型和业务相关信息
	 */
	ExtendActModel getModelAndBusInfoByWorkflowId(String workflowId);

	/**
	 * 获取流程
	 * @param modelId 模型id
	 * @return 获取流程
	 */
	ExtendActModel findByModelId(String modelId);
}
